package com.demo.java.OD51_100.OD59;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【事件推送】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145601143
 */
public class OdMain1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int m = scanner.nextInt();  // 集合 A 的大小
        int n = scanner.nextInt();  // 集合 B 的大小
        int r = scanner.nextInt();  // 允许的最大差值

        int[] numsA = new int[m];
        int[] numsB = new int[n];

        // 读取集合 A
        for (int i = 0; i < m; i++) {
            numsA[i] = scanner.nextInt();
        }

        // 读取集合 B
        for (int i = 0; i < n; i++) {
            numsB[i] = scanner.nextInt();
        }

        int j = 0; // 双指针的 B 指针
        for (int ai : numsA) {
            // 移动 j，使得 numsB[j] >= ai
            while (j < n && numsB[j] < ai) {
                j++;
            }
            // 确保找到的 bj 满足 |bj - ai| <= r
            if (j < n && numsB[j] - ai <= r) {
                System.out.println(ai + " " + numsB[j]);
            }
        }
    }
}